﻿using System;
using System.Windows.Forms;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.BusinessLogicLayer;
using CuaHangMayTinh.Utilities;

namespace CuaHangMayTinh.PresentationLayer
{
    /// <summary>
    /// form thêm, sửa khách hàng
    /// </summary>
    public partial class FormKhacHangThem : Form,IFormThemTV<KhachHangEntity>
    {
        /// <summary>
        /// chứa nội dung text lỗi
        /// </summary>
        private string Textloi = string.Empty;

        /// <summary>
        /// đối tượng entity null
        /// </summary>
        private KhachHangEntity entity;

        /// <summary>
        /// phương thức khởi tạo cho lúc thêm
        /// </summary>
        public FormKhacHangThem()
        {
            InitializeComponent();
            btn_Them.Text = "Thêm";
            this.Text = "Thêm mới khách hàng";
        }

        /// <summary>
        /// phương thức khởi tạo cho lúc sửa
        /// </summary>
        /// <param name="entity"></param>
        public FormKhacHangThem(KhachHangEntity entity)
        {
            InitializeComponent();
            this.txt_tenkhachang.Text = entity.TenKH;
            this.txt_cmnd.Text = entity.CMND_MaSoThue;
            this.txt_diachi.Text = entity.DiaChi;
            this.txt_sdt.Text = entity.SoDT;
            this.txt_email.Text = entity.Email;
            this.entity = entity;
            btn_Them.Text = "Cập nhật";
            this.Text = "Cập nhật khác hàng " + entity.TenKH;
        }

        /// <summary>
        /// lấy khách hàng từ form
        /// </summary>
        /// <returns></returns>
        public KhachHangEntity GetEntity()
        {
            KhachHangEntity entity = new KhachHangEntity();
            entity.TenKH = this.txt_tenkhachang.Text;
            entity.CMND_MaSoThue = this.txt_cmnd.Text;
            entity.DiaChi = this.txt_diachi.Text;
            entity.SoDT = this.txt_sdt.Text;
            entity.Email = this.txt_email.Text;
            return entity;
        }

        /// <summary>
        /// thêm mới 1 khách hàng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_themmoi_click(object sender, EventArgs e)
        {
            if (CheckInput())
            {
                if (entity == null)
                {
                    KhachHangEntity khachangEntity = GetEntity();
                    if (KhachHangManager.Insert(khachangEntity, ref Textloi) > 0)
                    {
                        MessageBox.Show("Thêm thành công");
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(Textloi);
                    }
                }
                else
                {
                    KhachHangEntity khachangEntity = GetEntity();
                    khachangEntity.MaKH = this.entity.MaKH;
                    if (KhachHangManager.UpDate(khachangEntity, ref Textloi))
                    {
                        MessageBox.Show("Cập nhật thành công!");
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(Textloi);
                    }
                }
            }
        }

        /// <summary>
        /// kiểm tra thông tin nhập của người dùng
        /// </summary>
        /// <returns></returns>
        public bool CheckInput()
        {
            if (StringHelper.IsNullorEmpty(txt_tenkhachang.Text))
            {
                MessageBox.Show("Bạn chưa nhập Tên vào !");
                return false;
            }
            if (StringHelper.IsNullorEmpty(txt_cmnd.Text))
            {
                MessageBox.Show("Bạn chưa nhập chứng minh nhân dân vào !");
                return false;
            }
            if (!StringHelper.IsNullorEmpty(txt_sdt.Text) && !DataUtil.KiemTraSoDt(txt_sdt.Text))
            {
                MessageBox.Show("Bạn nhập số điện thoại không hợp lệ!");
                return false;
            }
            if (!StringHelper.IsNullorEmpty(txt_email.Text) && !DataUtil.KiemTraEmail(txt_email.Text))
            {
                MessageBox.Show("Bạn nhập email không hợp lệ!");
                return false;
            }
            return true;
        }

        /// <summary>
        /// hàm xóa input
        /// </summary>
        public void XoaTrang()
        {
            this.txt_tenkhachang.Clear();
            this.txt_cmnd.Clear();
            this.txt_diachi.Clear();
            this.txt_sdt.Clear();
            this.txt_email.Clear();
        }

        /// <summary>
        /// nút xóa trằng trên form
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_xoatrang_click(object sender, EventArgs e)
        {
            XoaTrang();
        }

        /// <summary>
        /// set entity lên form
        /// </summary>
        /// <param name="entity"></param>
        public void SetEntity(KhachHangEntity entity)
        {
            throw new NotImplementedException();
        }

        private void txt_sdt_KeyPress(object sender, KeyPressEventArgs e)
        {
            DataUtil.PressInt(e);
        }
    }
}
